<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 
Promise.all(iterable)

 -->
  <script>
    let p1 = new Promise( ( resolve, reject ) => {
      console.log( "p1" )

      resolve( "11" )
    } )
    let p2 = new Promise( ( resolve, reject ) => {
      console.log( "p2" )

      // resolve( "22" )
      reject( "0" )
    } )
    let p3 = new Promise( ( resolve, reject ) => {
      console.log( "p3" )
      // resolve( "33" )
      reject( "000" )

    } )
    Promise.all( [ p1, p2, p3 ] )
      .then( ( value ) => {
        // 三个Promise都是成功状态时，才回执行then(),拿到三个成功的结果
        console.log( value )  // ['11', '22', '33']
      } )
      .catch( value => {
        // 有任何一个失败了，都执行catach(),拿到第一个失败的信息。
        console.log( "error===", value )  // "0"
      } )


    /*
Promise.any(): 只有又一个成功的，就返回成功的状态值。
Promise.reject(reason)
返回一个状态为已拒绝的 Promise 对象，并将给定的失败信息传递给对应的处理函数。

Promise.resolve(value)
返回一个状态由给定 value 决定的 Promise 对象。如果该值是 thenable（即，带有 then 方法的对象），返回的 Promise 对象的最终状态由 then 方法执行结果决定；否则，返回的 Promise 对象状态为已兑现，并且将该 value 传递给对应的 then 方法。
    */
  </script>
</body>

</html>